iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Mobile Development

從零開始的IOS開發日常系列 第 15

[鐵人賽 Day 15] Swift Protocol 傳值

  • 分享至 

  • xImage
  •  

什麼是 Protocol 傳值呢?

我們在開發一款 APP 時,一定會需要用到切換頁面的功能,而在我們切換頁面的時候,也需要把頁面內處理的值傳給其他頁面使用!

那我們傳值的後其實有很多方法,其中一個就是這個 Protocol 傳值!

開始使用 Protocol 傳值

我們可以在一個 Swift 的文件開頭,新增一個 Protocol , 這個 Protocol 內有想要傳的型態 Function (Protocol 必須要寫在 Class 外面)

protocol AddTimeZone : AnyObject {
    func addtimezone(addtimezone : String)
}

接著再新增一個變數存放這個 Protocol

 weak var pushvalue : AddTimeZone?

到這邊我們就建立完成 Protocol 了,接下來我們來看看如何使用它!
下面以我做的 Clock App 為使用範例!
我在 TableView 裡點選 Cell 的時候,會把值放進 Protocol 裡

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        pushvalue?.addtimezone(addtimezone: timeZones[indexPath.row]) //放進 Protocol 
        
        self.navigationController?.popViewController(animated: true) //跳回主頁面
    }

然後記得在原本 push 過去的 Action 打上存放 Protocol 的變數,來接收 Protocol 的值

nextVC.pushvalue = self

最後在主頁面的 Swift 直接使用 Protocol 的 Function 即可。

var timezones = [String]() //宣告一個陣列,可以存放 Protocol 裡面的值

 func addtimezone(addtimezone : String) {
        timezones.append(addtimezone)
        tableview.reloadData()
    }

上一篇
[鐵人賽 Day 14] Navigation bar 初入門
下一篇
[鐵人賽 Day 16] Swift 仿刻 IOS 內建的 Clock - 世界時鐘(1)功能介紹及 UI 建立
系列文
從零開始的IOS開發日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言